MuleSoft Accelerator for Financial Services icon

MuleSoft Accelerator for Financial Services

(3 reviews)

Salesforce CDP setup guide

The following provides guidance on Salesforce CDP setup required for the Optimize Customer Experiences with CDP use case.

CDP provisioning

  1. Log in to your Salesforce CDP instance with the link provided in your admin email and use the credentials provided. If this was deployed in your existing Salesforce instance, please use your current Salesforce Admin password.
  2. Click the Setup gear icon and then CDP Setup.
    • If you don’t see this option, either refresh your page or log out and back in with your admin user credentials.
  3. Click Get Started. Setup can take a few minutes. The Salesforce CDP instance is considered to be successfully set up if there is a green tick mark for all the steps. If not, correct any issues reported and finish the setup.
fins-cdp-setup-cdp-provisioning.png

Connect data

Connectors are specialized data streams that communicate with external sources to transmit data into a Salesforce CDP data source object.

Salesforce CDP has connectors for Marketing Cloud Email Studio, MobileConnect, MobilePush, Marketing Cloud Data Extensions, Salesforce CRM, Ingestion API, Interaction Studio, and for data outside Salesforce via cloud storage providers.

The Optimize Customer Experiences with CDP use case uses the following connectors:

  • Salesforce CRM - to connect data from a Salesforce CRM instance to CDP
  • Ingestion API - to connect data from external source systems like Snowflake, Databricks, and Amazon S3 via MuleSoft’s Salesforce CDP connector.

Salesforce CRM Connector

In Salesforce CDP, you can establish a connection to other Salesforce CRM orgs. Follow the below steps to create one of these connections.

  1. In Salesforce CDP, select the Setup gear icon and then CDP Setup.
  2. Select Salesforce CRM.
  3. To connect a Salesforce org to Salesforce CDP, click New. You can connect the Salesforce org that has Salesforce CDP provisioned, or you can Connect Another org (external orgs).
  4. To connect your Salesforce orgs to Salesforce CDP, click Connect. If connecting an external Salesforce org, enter your user credentials to establish the connection with Salesforce CDP.
  5. After you connect your Salesforce org (for example, Salesforce FSC Banking), you can view the connection details.
    • Connector Name: The name of the Salesforce org that is connected to Salesforce CDP.
    • Connector Type: Identifies the name of the data connection type.
    • Status: Shows the org’s status.
    • Org Id: The Salesforce org identifier connected to Salesforce CDP.
    • Updated: The date and timestamp of when the Salesforce org was connected to Salesforce CDP.
  6. Your Salesforce org is now connected.

After the connection is established, the Salesforce CDP admin can either use bundles that can automatically deploy data or set up their own data streams.

For the Optimize Customer Experiences with CDP use case, the name of the Connector used is Salesforce FSC Banking. This name will appear under Salesforce Org drop down while creating a new Data Stream.

Ingestion API

You can push data from an external system into Salesforce CDP via the Ingestion API. This RESTful API offers two interaction patterns: bulk and streaming. The streaming pattern accepts incremental updates to a data set as those changes are captured, while the bulk pattern accepts CSV files in cases where data syncs occur periodically. The same data stream can accept data from the streaming and the bulk interaction.

Follow the steps in each section below to setup and configure ingestion API to push data from external systems.

Set up an Ingestion API Connector

  1. In Salesforce CDP, select CDP Setup.
  2. Click Ingestion API.
  3. Click New, enter a name (for example, FINS_Banking-Data-Connector) for the API source, then click Save. On the details page for the new connector, you must upload a schema file in OpenAPI (OAS) format with a .yaml file extension. The schema file describes how data transferred via the API is structured. Note: Ingestion API schemas have set requirements - review the schema requirements before ingestion.
  4. Click Upload Schema and navigate to the location of the file you want to use. Select the file and click Open. For the Optimize Customer Experiences with CDP use case the schema file mule-cdp-connector-schema.yaml is available under /src/test/resources/cdp-schema of the Implementation Template FINS Salesforce CDP System API
  5. Preview all the detected objects and their attributes in your schema.
  6. Click Save. The connector page reflects the updated status.
  7. After the schema file is uploaded, you can create data streams to begin sending data from your source system.

For the Optimize Customer Experiences with CDP use case, the external systems Snowflake, Databricks, and Amazon S3 contain data to be pushed to CDP through MuleSoft’s Salesforce CDP connector using the Ingestion API. The name of the Connector used is Salesforce FSC Banking, which will appear under Ingestion API drop down while creating a new Data Stream.

The schema used for the Optimize Customer Experiences with CDP use case can be found in the implementation template FINS Salesforce CDP System API. The following objects are to be added:
- FinancialAccount
- FinancialTransaction
- ExternalFinancialAccount
- WebEngagement

Schema requirements

To create an ingestion API source in Salesforce CDP, the schema file you upload must meet specific requirements:

  • Uploaded schemas have to be in valid OpenAPI format with a .yml or .yaml extension. OpenAPI version 3 is supported (3.0.0, 3.0.1, 3.0.2).
  • Objects cannot have nested objects.
  • Each schema must have at least one object. Each object must have at least one field.
  • Objects cannot have more than 1000 fields.
  • Objects cannot be longer than 80 characters.
  • Object names must contain only a-z, A-Z, 0-9, _, -. No unicode characters.
  • Field names must contain only a-z, A-Z, 0-9, _, -. No unicode characters.
  • Field names cannot be any of these reserved words: dateid, location_id, dat_account_currency, dat_exchange_rate, pacing_period, pacing_end_date, rowcount, version. Field names cannot contain string .
  • Field names cannot exceed 80 characters.
  • Fields meet the following type and format:
    • For text or boolean type: string
    • For number type: number
    • For date type: string; format: date-string
  • Object names cannot be duplicated; case-insensitive.
  • Objects cannot have duplicate field names; case-insensitive.
  • Date strings in your object payloads must be in ISO 8601 UTC Zulu with formatyyyy-MM-dd'T'HH:mm:ss.SSS'Z.

When updating your schema, be aware that:

  • Existing field data types cannot be changed.
  • Upon updating an object, all the existing fields for that object must be present.
  • Your updated schema file only includes changed objects, so you don’t have to provide a comprehensive list of objects each time.
  • A date field must be present for objects that are intended for profile or engagement category. Objects of type other do not impose this same requirement.

Example Schema: Refer to this link for an example schema.

Create a data stream

Data streams are the connections and associated data ingested into Salesforce CDP. Salesforce CDP includes many data streams that can operate on different refresh schedules. Check Data Stream Schedule in Salesforce CDP to know about how and when these data streams update.

Create a Salesforce CRM data stream

Create a data stream to begin the flow of data from a Salesforce CRM data source. Add additional permissions to your Salesforce CDP Salesforce Connector Integration permission set in your Salesforce CRM org (such as your Salesforce FSC Banking instance) to ingest standard and custom objects and fields into Salesforce CDP. Note: if you are prompted with an error stating those objects cannot be added, you might need to Enable Object and Field Permissions to Access Salesforce CRM in Salesforce CDP (see below for further details).

To add permissions for objects and their fields:

  1. In the Salesforce org containing the objects and fields you want to ingest into Salesforce CDP, from Setup in the Quick Find box, enter Permission, and select Permission Sets.
  2. Select the Salesforce CDP Salesforce Connector Integration permission set. Note: The permission set is available only after you connect your CRM org to Salesforce CDP.
  3. From Apps, select Object Settings.
  4. Select the object to ingest into Salesforce CDP.
  5. To change object permissions, click Edit.
  6. Enable Read and View All permissions for the object and Read Access for each field.
  7. Click Save.

Repeat these steps for all objects and fields you want to ingest into Salesforce CDP.

To create data streams from Salesforce CRM data source:

  1. In Salesforce CDP, navigate to Data Streams.
  2. Click New.
  3. Select the Salesforce CRM data source and click Next.
  4. To create your data stream, select a Salesforce org. If you have only one Salesforce org connected to Salesforce CDP, it will be selected by default.
  5. Select the All Objects tab and select the object. Click Next.
  6. Review the fields to include in your data stream. All fields are preselected by default. The number of fields available for the object is shown in parentheses.
  7. Deselect any of the fields not required for your data stream in the Header Label.
  8. If needed, add these formula fields and then click Next:
    • Field Label: The display name for a data stream field.
    • Field API Name: The programmatic reference for a data stream field.
    • Formula Return Type: The data type corresponding to the newly derived field. Options include Number, Text, and Date.
  9. Fill in deployment details.
    • Data Stream Name: Defaults to Object Label and Salesforce org ID, but can be edited.
    • Ongoing Refresh Settings: Frequency and timing of new data retrieval. The Frequency is hourly and is set automatically.
  10. Click Deploy. Your Salesforce CRM data stream is now created.
  11. To create more data streams, repeat steps 6 through 10.

For the Optimize Customer Experiences with CDP use case, create two data streams from Salesforce CRM (Salesforce Financial Service Cloud instance).

Object in Salesforce CRMName of the DataStream
AccountFINS_Banking-Account
ContactFINS_Banking-Contact

Create an Ingestion API data stream

After uploading the schema file, create a data stream from your source objects.

  1. In Salesforce CDP, select Data Streams.
  2. In recently viewed data streams, click New.
  3. Click Ingestion API.
  4. If you have more than one Ingestion API configured, select the one you want from the dropdown.
  5. Check the objects found in the schema you want to use and click Next.
  6. At the New Data Stream dialog box, configure the following:
    • Primary Key: A true Primary Key needs to be leveraged for CDP. If one does not exist, you will need to create a Formula Field for the Primay Key.
    • Category: Choose between Profile and Engagement. Note: For the Optimize Customer Experiences with CDP use case, the category for all the objects in the schema are Profile.
    • Record Modified Date: To order Profile modifications, use the Record Modified Date. Note: A record modified field that indicates when each incoming record was last modified is required for Engagement object types. While the field requirement is optional for Profile and Other objects, it is encourage to provide the record modified field to ensure incoming records are processed in the right order.
    • Date Time Field: Used to represent when Engagement from an external source occurred at ingestion.
    • Click the New Formula Field (Optional).
  7. Click Next.
  8. On the final summary screen, review the list of data streams that Salesforce CDP created.
  9. Click Deploy. If you have only created one data stream, the data stream’s record page appears. If you’ve created multiple data streams, the view refreshes to show all recently viewed data streams.
  10. Map the data for the data stream before use. Wait up to one hour for your data to appear in your data stream.

For the Optimize Customer Experiences with CDP use case, add schema for the following objects and create a seperate data stream for each of the objects by repeating steps 5 through 9. At step 6, click New Formula field with Field Label as PartyType with Formula Return Type as Text. Under Transformation Formula, apply the formula to return Individual as Text (for example: IF(sourceField['globalPartyId'],'Individual','Individual'))

Schema Object in Ingestion APIName of the DataStream
FinancialAccountFINS_Banking-Data-Connector-FinancialAccount
FinancialTransactionFINS_Banking-Data-Connector-FinancialTransaction
ExternalFinancial AccountFINS_Banking-Data-Connector-ExternalFinancialAccount
WebEngagementFINS_Banking-Data-Connector-WebEngagement

Create a Connected App for Salesforce CDP Ingestion API

Before you can send data into Salesforce CDP using Ingestion API via Mulesoft’s Salesforce CDP connector, you must configure a Connected App. Refer this link for more details on creating a connected app.

As part of your Connected App set up for Ingestion API, you must select the following OAuth scopes:
- Access and manage your Salesforce CDP Ingestion API data (cdp_ingest_api)
- Manage Salesforce CDP profile data (cdp_profile_api)
- Perform ANSI SQL queries on Salesforce CDP data (cdp_query_api)
- Manage user data via APIs (api)
- Perform requests on your behalf at any time (refresh_token, offline_access).

Configure Mulesoft’s Salesforce CDP Connector

The MuleSoft Connector for Salesforce CDP provides customers a pipeline to send data into Salesforce CDP. This connector works with the Salesforce CDP Bulk and Streaming API, depending on the operation you configure. Each API call uses a request/response pattern over an HTTPS connection. All required request headers, error handling, and HTTPS connection configurations are built into the connector.

Refer to the Salesforce CDP Connector documentation for additional details on configuration and available operations.

For the Optimize Customer Experiences with CDP use case, refer to the FINS Salesforce CDP System API specification and FINS Salesforce CDP System API implementation template assets.

Data modeling and data mapping

Data cleansing and preparation

Cleaning and preparing your data is critical for success in using Salesforce CDP’ segmentation and activation capabilities.

Note: Formula fields can be created at the time of data stream creation or later. Click the New Formula Field at the time of DataStrem creation (Step 6) or Click the DataStream from recently viewed data streams list. Click Add Source Fields on the data stream page.

Data mapping

After creating your data streams, you must associate your data source objects (DSOs) to data model objects (DMOs). Only mapped fields and objects with relationships can be used for Segmentation and Activation.

On the Data Stream detail page or after deploying your data streams, click Start Data Mapping.

On the Data Streams mapping canvas, you can see both your DSOs and target DMOs. To map one to another, click the name of a DSO and connect it to the desired DMO. For example, you can map the DSO firstname to the target First Name field using this method.

  • Data Mapper Views
    Select table view or visual view when mapping your data in Salesforce CDP.
  • Data Model Objects
    Objects in the data model created by the customer for CDP implementation are called Data Model Objects. If a new object is created, it can use a reference object. If a Data Model Object uses a reference object, it inherits the name, shape, and semantics of the reference object. This Data Model Object is called a Standard Object. You can also choose to define an entirely custom Data Model Object, called a Custom Object.
  • Required Data Mappings
    When mapping your party area data, complete the required fields and relationships to successfully use Identity Resolution, Segmentation, and Activation.

For the Optimize Customer Experiences with CDP use case, map the Data Streams to Data Model Objects (DMO) as per the below table.

Data Stream NameCustom Data Model Object (DMO)Standard Data Model Object (DMO)
FINS_Banking-AccountAccount, Individual, Contact Point Phone, Contact Point Email, Contact Point Address, Party Identification
FINS_Banking-ContactAccountContact, Individual, Contact Point Phone, Contact Point Email, Contact Point Address, Party Identification
FINS_Banking-Data-Connector-FinancialAccountFINS_Banking_FinancialAccountIndividual, Party Identification
FINS_Banking-Data-Connector-FinancialTransactionFINS_Banking_FinancialTransactionIndividual, Party Identification
FINS_Banking-Data-Connector-ExternalFinancialAccountFINS_Banking_ExternalFinancialAccountIndividual, Party Identification, Contact Point Email
FINS_Banking-Data-Connector-WebEngagementFINS_Banking_WebEngagementIndividual, Party Identification, Contact Point Email

Note: The names given to DMO are critical as they are used for Calculated Insights that are used to create Segments in later steps.

Below are the DMOs and relationships that needs to be maintained when Data mappings are done between Data Stream and DMOs.

Data Relationships between DMOs

ObjectCardinalityRelated Object
AccountN:1Contact Point Phone
AccountN:1Individual
AccountN:1Contact Point Address
Account ContactN:1Account
Account ContactN:1Contact Point Address
Account ContactN:1Contact Point Phone
Account ContactN:1Contact Point Email
Account ContactN:1Contact Point Phone
Account ContactN:1Individual
Contact Point AddressN:1Individual
Contact Point AddressN:1Account
Contact Point EmailN:1Account
Contact Point EmailN:1Individual
Contact Point PhoneN:1Account
Contact Point PhoneN:1Individual
FINS_Banking_ExternalFinancialAccountN:1Individual
FINS_Banking_ExternalFinancialAccountN:1Account
FINS_Banking_FinancialAccountN:1Individual
FINS_Banking_FinancialAccountN:1Account
FINS_Banking_FinancialTransactionN:1Individual
FINS_Banking_FinancialTransactionN:1Account
FINS_Banking_WebEngagementN:1Individual
FINS_Banking_WebEngagementN:1Account
Party IdentificationN:1Individual

Below of Data Mappings between Data Streams and DMOs. In case of Custom Model Data Objects (DMO) the schema of the DMO is also defined:

Data Mappings of FINS_Banking-Account Data Stream to Account, Individual, Contact Point Address, Contact Point Email, Contact Point Phone, and Party Identification DMOs

FINS_Banking-AccountAccountContact Point AddressContact Point EmailContact Point PhoneIndividualParty Identification
Account DescriptionAccount Description
Account IDAccount IdContact Point Address IdContact Point Email IdContact Point Phone Id
Account NameAccount Name
Account NumberAccount Number
Account TypeAccount Type
Active Leads
Created DateCreated Date
EmailEmail Address
First NameFirst Name
Global Party IdPartyPartyContact Point Email Id,PartyPartyIndividual Id, Global PartyParty Identification Id, Identification Number, Party
Last Modified DateLast Modified DateLast Name
Last Name
Mailing CityCity
Mailing CountryCountry
Mailing LatitudeGeo Latitude
Mailing LongitudeGeo Longitude
Mailing State/ProvinceState Province
Mailing StreetAddress Line 1
Mailing Zip/Postal CodePostal Code
MobileFormatted E164 Phone Number
Parent Account IDParent Account
PartyTypeIdentification Name, Party Identification Type

Data Mappings of FINS_Banking-Contact Data Stream to Account Contact, Individual, Contact Point Email, Contact Point Phone, and Party Identification DMOs

FINS_Banking-ContactAccount ContactContact Point EmailContact Point PhoneIndividualParty Identification
Contact IdAccount Contact Id
Account IDAccount IdContact Point Email IdContact Point Phone Id
Created DateCreated Date
EmailEmail Address
First NameFirst Name
Global Individual IdIndividualContact Point Email Id, PartyPartyIndividual Id, Global PartyParty Identification Id, Identification Number, Party
Last Modified DateLast Modified DateLast Name
Last Name
Business PhoneBusiness PhoneFormatted E164 Phone Number
PartyTypeIdentification Name, Party Identification Type

Schema of FINS_Banking_FinancialAccount Custom DMO

Field NameField API NameData TypePrimary Key
accountBalanceaccountBalance__cNumber
accountCurrencyaccountCurrency__cText
accountNumberaccountNumber__cText
accountTypeaccountType__cText
availableBalanceavailableBalance__cNumber
createdBycreatedBy__cText
createdDatecreatedDate__cDateTime
depositAccountTypedepositAccountType__cText
globalAccountIdglobalAccountId__cTextYes
institutionIdinstitutionId__cText
isDeletedisDeleted__cText
loanDurationMonthsloanDurationMonths__cNumber
namename__cText
openedDateopenedDate__cDateTime
primaryAccountOwnerprimaryAccountOwner__cText
taxIdentificationNumbertaxIdentificationNumber__cText
updatedByupdatedBy__cText
updatedDateupdatedDate__cDateTime
Data SourceDataSource__cText
Data Source ObjectDataSourceObject__cText

Data Mappings of FINS_Banking-Data-Connector-FinancialAccount Data Stream to FINS_Banking_FinancialAccount, Individual, and Party Identification DMOs

FINS_Banking-Data-Connector-FinancialAccountFINS_Banking_FinancialAccountIndividualParty Identification
accountBalanceaccountBalance
accountCurrencyaccountCurrency
accountNumberaccountNumber
accountTypeaccountType
availableBalanceavailableBalance
createdBycreatedBy
createdDatecreatedDate
depositAccountTypedepositAccountType
globalAccountIdglobalAccountId
institutionIdinstitutionId
isDeletedisDeleted
loanDurationMonthsloanDurationMonths
namenameFirst Name, Last Name
openedDateopenedDate
primaryAccountOwnerprimaryAccountOwnerIndividual Id, Global PartyParty Identification Id, Identification Number, Party
taxIdentificationNumbertaxIdentificationNumber
updatedByupdatedBy
updatedDateupdatedDate
Data SourceData Source
Data Source ObjectData Source Object
partyTypeIdentification Name, Party Identification Type

Schema of FINS_Banking_FinancialTransaction Custom DMO

Field NameField API NameData TypePrimary Key
accountIdaccountId__cText
accountOwnerIdaccountOwnerId__cText
createdBycreatedBy__cText
createdDatecreatedDate__cDateTime
creditAccountIdcreditAccountId__cText
debitAccountIddebitAccountId__cText
descriptiondescription__cText
globalTransactionIdglobalTransactionId__cTextYes
isDeletedisDeleted__cText
isDisputedisDisputed__cText
namename__cText
transactionAmounttransactionAmount__cNumber
transactionDatetransactionDate__cDateTime
transactionNumbertransactionNumber__cNumber
transactionStatustransactionStatus__cText
transactionSubTypetransactionSubType__cText
transactionTypetransactionType__cText
updatedByupdatedBy__cText
updatedDateupdatedDate__cDateTime
Data Source ObjectDataSourceObject__cText
Data SourceDataSource__cText

Data Mappings of FINS_Banking-Data-Connector-FinancialTransaction Data Stream to FINS_Banking_FinancialTransaction, Individual, and Party Identification DMOs

FINS_Banking-Data-Connector-FinancialTransactionFINS_Banking_FinancialTransactionIndividualParty Identification
accountIdaccountId
accountOwnerIdaccountOwnerIdIndividual Id, Global PartyParty Identification Id, Identification Number, Party
createdBycreatedBy
createdDatecreatedDate
creditAccountIdcreditAccountId
debitAccountIddebitAccountId
descriptiondescription
globalTransactionIdglobalTransactionId
id
isDeletedisDeleted
isDisputedisDisputed
namename
transactionAmounttransactionAmount
transactionDatetransactionDate
transactionNumbertransactionNumber
transactionStatustransactionStatus
transactionSubTypetransactionSubType
transactionTypetransactionType
updatedByupdatedBy
updatedDateupdatedDate
Data Source ObjectData Source Object
Data SourceData Source
PartyTypeIdentification Name, Party Identification Type

Schema of FINS_Banking_ExternalFinancialAccount Custom DMO

Field NameField API NameData TypePrimary Key
accountStatusaccountStatus__cText
accountTypeaccountType__cText
ageOfAccountageOfAccount__cNumber
averageDailyBalanceaverageDailyBalance__cNumber
emailAddressemailAddress__cText
individualIdindividualId__cTextYes
institutionNameinstitutionName__cText
lengthOfTimeAsClientlengthOfTimeAsClient__cNumber
totalNumberOfAccountstotalNumberOfAccounts__cNumber
Data Source ObjectDataSourceObject__cText
Data SourceDataSource__cText

Data Mappings of FINS_Banking-Data-Connector-ExternalFinancialAccount Data stream to FINS_Banking_ExternalFinancialAccount, Individual, Contact Point Email, and Party Identification DMOs

FINS_Banking-Data-Connector-ExternalFinancialAccountFINS_Banking_ExternalFinancialAccountIndividualParty IdentificationContact Point Email
accountStatusaccountStatus
accountTypeaccountType
ageOfAccountageOfAccount
averageDailyBalanceaverageDailyBalance
emailAddressemailAddressEmail Address
individualIdindividualIdIndividual Id, Global PartyParty Identification Id, Identification Number, PartyContact Point Email Id, Party
institutionNameinstitutionName
lengthOfTimeAsClientlengthOfTimeAsClient
totalNumberOfAccountstotalNumberOfAccounts
Data Source ObjectData Source Object
Data SourceData Source
PartyTypeIdentification Name, Party Identification Type

Schema of FINS_Banking_WebEngagement Custom DMO

Field NameField API NameData TypePrimary Key
channelTypechannelType__cText
createdBycreatedBy__cText
createdDatecreatedDate__cDateTime
emailAddressemailAddress__cText
individualIdindividualId__cText
isDeletedisDeleted__cText
pagesPerSessionpagesPerSession__cNumber
sessionIdsessionId__cTextPrimary Key
timeBetweenChannelstimeBetweenChannels__cNumber
timeInChanneltimeInChannel__cNumber
updatedByupdatedBy__cText
updatedDateupdatedDate__cDateTime
Data Source ObjectDataSourceObject__cText
Data SourceDataSource__cText

Data Mappings of FINS_Banking-Data-Connector-WebEngagement Data stream to FINS_Banking_WebEngagement, Individual, Contact Point Email, and Party Identification DMOs

FINS_Banking-Data-Connector-WebEngagementFINS_Banking_WebEngagementIndividualParty IdentificationContact Point Email
channelTypechannelType
createdBycreatedBy
createdDatecreatedDate
emailAddressemailAddressEmail Address
individualIdindividualIdIndividual Id, Global PartyParty Identification Id, Identification Number, PartyContact Point Email Id, Party
isDeletedisDeleted
pagesPerSessionpagesPerSession
sessionIdsessionId
timeBetweenChannelstimeBetweenChannels
timeInChanneltimeInChannel
updatedByupdatedBy
updatedDateupdatedDate
Data Source ObjectData Source Object
Data SourceData Source
PartyTypeIdentification Name, Party Identification Type

Identity Resolution

Use Identity Resolution to match and reconcile data about people into a comprehensive view of your customer called a unified profile. Identity Resolution uses matching and reconciliation rulesets to link the most relevant data from all the associated profiles of each unified profile. Identity Resolution is powered by rulesets to create unified profiles in Salesforce CDP.

Access Identity Resolution from Salesforce CDP after mapping entities to the CIM. Entities must be mapped before you can create rulesets. Additional Information can be found here.

For the Optimize Customer Experiences with CDP use case, use the Custom Match Rules leveraging Identification Number of Party Identification Object for Global Party Id Match followed by Normalized Email Address.

fins-cdp-setup-identity-match-rules.png

fins-cdp-setup-id-match-rules-party-id.png

fins-cdp-setup-id-match-rules-email-address.png

To create your Identity Resolution Rules, follow the steps below:

  1. Go to the Identity Resolution Tab in the main Menu.
  2. Click New in the upper right corner.
  3. Select Individual from the drop-down for the Entity. Do not add a Ruleset ID for your Primary Ruleset.
  4. Create a Ruleset Name. If you are using more than one Ruleset for testing, having the name reference the rules included will help differentiate the rulesets.
  5. Add a Rule Description (optional).
  6. Click Save to save the ruleset.
  7. Click the Configure button to configure your Match Rules.
  8. Click the Configure button nest to Match Rule 1 to configure your Match Rules.
  9. Add the desired Match Rules.
  10. Click the Next button and dd the desired criteria for you Match Rules.
  11. Click the Next button. Click Add Match Rule to add any additional rules or click Save to complete Match Rules.

Once run, review the Identity Resolution Summary and Processing History Screens to validation your Identity Resolution Rules. Also add applicable Individual Reconciliation Rules.

Calculated Insights

The Calculated Insights feature lets you define and calculate multi-dimensional metrics from your entire digital state stored in Salesforce CDP.

Calculated Insights can be built Using Calculated Insights Builder, ANSI SQL, Salesforce Package, or Streaming Insights. Details on all options and use cases can be found in the CDP Help Documentation. Also check Processing Calculated Insights for the Calculated Insights schedule.

Examples of Calculated Insights are available in our CDP Help Documentation and in our CDP Salesforce GitHub Instance. Once created, Calculated Insights are available in the Attribute Library. You can also confirm and validate Calculated Insights via Data Explorer.

For the Optimize Customer Experiences with CDP use case, create Calculated Insights to gain visibility across our Account (FinancialAccount and ExternalFinancialAccount), WebEngagement along with Customer Profile info.

Cross-selling money market account

For Cross-selling money market account segment (created in later steps) create two Calculated Insights:

  • Cross Sell Account Summary Metrics v1 that provides metrics on Account Balances, Age of the Account
  • Cross Sell Account Type Metrics v1 that provides metrics on Count of Account based on Account Types of the Customer.

To create your Calculated Insights, follow the steps below:

  1. Click Calculated Insights, Click New.
  2. Click Create with SQL, Click Next.
  3. Enter Calculated Insight Name as Cross Sell Account Summary Metrics v1.
  4. In the Expression field enter the below query.
     SELECT INDV.si_individual_id__c AS individual_id__c, MAX(MONTHS_BETWEEN(CURRENT_DATE(),FINS_Banking_FinancialAccount__dlm.openedDate__c)) AS max_age__c, COUNT(FINS_Banking_FinancialAccount__dlm.globalAccountId__c) As count_of_accounts__c,SUM(FINS_Banking_FinancialAccount__dlm.accountBalance__c) as all_account_balances__c FROM FINS_Banking_FinancialAccount__dlm LEFT JOIN (SELECT ssot__Individual__dlm.ssot__Id__c AS si_individual_id__c , APPROX_COUNT_DISTINCT(ssot__Individual__dlm.ssot__Id__c ) AS si_count__c FROM ssot__Individual__dlm GROUP BY ssot__Individual__dlm.ssot__Id__c ) AS INDV ON FINS_Banking_FinancialAccount__dlm.primaryAccountOwner__c=INDV.si_individual_id__c WHERE ((FINS_Banking_FinancialAccount__dlm.depositAccountType__c='SAVINGS') or (FINS_Banking_FinancialAccount__dlm.depositAccountType__c='CHECKING')) GROUP BY individual_id__c
  5. Click Save.
  6. Create another Calculated Insight Name as Cross Sell Account Type Metrics v1.
  7. In the Expression field enter the below query. Click Save.
     SELECT INDV.ss_individual_id__c AS individual_id__c,COUNT(FINS_Banking_FinancialAccount__dlm.depositAccountType__c) AS count_deposit_account_type__c, FINS_Banking_FinancialAccount__dlm.depositAccountType__c As deposit_account_type__c FROM FINS_Banking_FinancialAccount__dlm LEFT JOIN ( SELECT ssot__Individual__dlm.ssot__Id__c AS ss_individual_id__c, APPROX_COUNT_DISTINCT(ssot__Individual__dlm.ssot__Id__c ) AS ss_count__c FROM ssot__Individual__dlm GROUP BY ssot__Individual__dlm.ssot__Id__c ) AS INDV ON FINS_Banking_FinancialAccount__dlm.primaryAccountOwner__c=INDV.ss_individual_id__c GROUP BY individual_id__c,deposit_account_type__c


    fins-cdp-setup-calculated-insights-cross-sell.png

Up-selling mortgage account

For Up-selling mortgage account segment (created in later steps) create three Calculated Insights:

  • Upsell Account Summary Metrics v1 that provides metrics on Total Account Balances, Age of the Accounts.
  • Upsell Account Type Metrics v1 that provides metrics on Count of Account based on Account Types of the Customer.
  • Upsell Web Engagement Metrics v1 that provides metrics on the Web Engagement data of the Customer.

To create your Calculated Insights, follow the steps below:

  1. Click Calculated Insights, Click New.
  2. Click Create with SQL, Click Next.
  3. Enter Calculated Insight Name as Upsell Account Summary Metrics v1.
  4. In the Expression field enter the below query.
     SELECT INDV.si_individual_id__c AS individual_id__c, (SUM(IFNULL(S.ext_o_daily_balance__c,S.inv_o_daily_bal__c))) AS total_balance__c, (MAX(IFNULL(S.ext_o_time_as_client__c,S.inv_o_acc_opened_date__c))) AS time_as_client__c FROM ( SELECT FEA.ext_daily_balance__c AS ext_o_daily_balance__c,FEA.ext_indv__c AS ext_o_indv__c, FEA.ext_time_as_client__c AS ext_o_time_as_client__c, FA.inv_daily_bal__c AS inv_o_daily_bal__c, FA.int_indv__c AS int_o_indv__c, FA.int_acc_opened_date__c AS inv_o_acc_opened_date__c FROM ( SELECT SUM(FINS_Banking_ExternalFinancialAccount__dlm.averageDailyBalance__c) AS ext_daily_balance__c, FINS_Banking_ExternalFinancialAccount__dlm.individualId__c AS ext_indv__c, (MAX(IFNULL(FINS_Banking_ExternalFinancialAccount__dlm.lengthOfTimeAsClient__c,0))*12) AS ext_time_as_client__c FROM FINS_Banking_ExternalFinancialAccount__dlm WHERE FINS_Banking_ExternalFinancialAccount__dlm.accountType__c='Savings' OR FINS_Banking_ExternalFinancialAccount__dlm.accountType__c='Checking' OR FINS_Banking_ExternalFinancialAccount__dlm.accountType__c='Money Market' GROUP BY FINS_Banking_ExternalFinancialAccount__dlm.individualId__c) AS FEA FULL JOIN ( SELECT SUM(FINS_Banking_FinancialAccount__dlm.accountBalance__c) AS inv_daily_bal__c, FINS_Banking_FinancialAccount__dlm.primaryAccountOwner__c AS int_indv__c, (MONTHS_BETWEEN(CURRENT_DATE(),MAX(FINS_Banking_FinancialAccount__dlm.openedDate__c))) AS int_acc_opened_date__c FROM FINS_Banking_FinancialAccount__dlm WHERE FINS_Banking_FinancialAccount__dlm.depositAccountType__c IS NOT NULL GROUP BY FINS_Banking_FinancialAccount__dlm.primaryAccountOwner__c) AS FA ON FEA.ext_indv__c= FA.int_indv__c) AS S LEFT JOIN (SELECT ssot__Individual__dlm.ssot__Id__c AS si_individual_id__c , APPROX_COUNT_DISTINCT(ssot__Individual__dlm.ssot__Id__c ) AS si_count__c FROM ssot__Individual__dlm GROUP BY ssot__Individual__dlm.ssot__Id__c ) AS INDV ON IFNULL(S.ext_o_indv__c,S.int_o_indv__c)=INDV.si_individual_id__c group by individual_id__c
  5. Click Save.
  6. Create another Calculated Insight Name as Upsell Account Type Metrics v1.
  7. In the Expression field enter the below query. Click Save.

     SELECT SUM(IFNULL(S.i_count_type__c ,S.e_count_type__c)) AS count__c, IFNULL(S.i_deposit_account_type__c,S.e_deposit_account_type__c) AS account_type__c,INDV.si_individual_id__c id__c FROM ( SELECT FA.count_type__c AS i_count_type__c, FA.deposit_account_type__c as i_deposit_account_type__c, FA.individual_id__c AS i_individual_id__c,FEA.count_type__c AS e_count_type__c, FEA.deposit_account_type__c as e_deposit_account_type__c, FEA.individual_id__c AS e_individual_id__c FROM ( SELECT IFNULL(COUNT(FINS_Banking_ExternalFinancialAccount__dlm.accountType__c),0) as count_type__c, SUBSTRING(UPPER(FINS_Banking_ExternalFinancialAccount__dlm.accountType__c),0,5) AS deposit_account_type__c, FINS_Banking_ExternalFinancialAccount__dlm.individualId__c AS individual_id__c FROM FINS_Banking_ExternalFinancialAccount__dlm group by SUBSTRING(UPPER(FINS_Banking_ExternalFinancialAccount__dlm.accountType__c),0,5),FINS_Banking_ExternalFinancialAccount__dlm.individualId__c) AS FEA FULL JOIN (SELECT IFNULL(COUNT(FINS_Banking_FinancialAccount__dlm.depositAccountType__c),0) AS count_type__c, SUBSTRING(UPPER(FINS_Banking_FinancialAccount__dlm.depositAccountType__c),0,5) AS deposit_account_type__c, FINS_Banking_FinancialAccount__dlm.primaryAccountOwner__c AS individual_id__c FROM FINS_Banking_FinancialAccount__dlm group by SUBSTRING(UPPER(FINS_Banking_FinancialAccount__dlm.depositAccountType__c),0,5), FINS_Banking_FinancialAccount__dlm.primaryAccountOwner__c ) AS FA ON FEA.individual_id__c = FA.individual_id__c ) AS S LEFT JOIN (SELECT ssot__Individual__dlm.ssot__Id__c AS si_individual_id__c , APPROX_COUNT_DISTINCT(ssot__Individual__dlm.ssot__Id__c ) AS si_count__c FROM ssot__Individual__dlm GROUP BY ssot__Individual__dlm.ssot__Id__c ) AS INDV ON S.i_individual_id__c=INDV.si_individual_id__c GROUP BY id__c, account_type__c
  8. Click Save.
  9. Create another Calculated Insight Name as Upsell Web Engagement Metrics v1.
  10. In the Expression field enter the below query. Click Save.

     SELECT I.ss_individual_id__c AS individual_id__c, FINS_Banking_WebEngagement__dlm.channelType__c AS channel_type__c, SUM(FINS_Banking_WebEngagement__dlm.timeInChannel__c) AS total_time_spent__c, SUM(FINS_Banking_WebEngagement__dlm.pagesPerSession__c) AS total_pages_visited__c FROM FINS_Banking_WebEngagement__dlm LEFT JOIN ( SELECT ssot__Individual__dlm.ssot__Id__c AS ss_individual_id__c, APPROX_COUNT_DISTINCT(ssot__Individual__dlm.ssot__Id__c ) AS ss_count__c FROM ssot__Individual__dlm GROUP BY ssot__Individual__dlm.ssot__Id__c ) AS I ON FINS_Banking_WebEngagement__dlm.individualId__c=I.ss_individual_id__c GROUP BY channel_type__c, individual_id__c



    fins-cdp-setup-calculated-insights-up-sell.png

Create and activate segments

Segmentation

Creating segments is simple in CDP.

  1. In Salesforce CDP, click Segments.
  2. When you see the list of already created segments, if any, click New.
  3. Fill in all desired fields under Segment Details. Segment On, Segment Name, and Publish Schedule are required.
    • Segment On: Identifies the entity that your segment builds on.
    • Segment Name: Give your Segment a unique name that’s easy to remember and recognize.
    • Segment Description: Provide detail about a segment’s use, contents, or timeframes for later review.
    • Publish Schedule: Determines when and how often your segment publishes to activation targets.
  4. Save your changes.

Tip: Leave the Publish Schedule as Don’t Refresh for now, and then fill it in after you complete your segment filters. Segment can be scheduled to publish every 12 or 24 hours.

Segment On: Segment On defines the target entity (object) used to build your segment. For example, you can build a segment on Unified Individual or Account or Individual. You can choose any entity marked as type Profile during ingestion.

For the Optimize Customer Experiences with CDP use case, create Segments on Individual.

Cross-selling money market account:

For Cross-selling money market account, to aggregrate data use the Calculated Insights created earlier and filter the data with the criteria mentioned in the below steps:

  1. Select the all_account_balances__c from our Attribute Library by accessing the Cross Sell Account Summary Metrics v1 Calculated Insights on the Individual and drag it over the the canvas.
  2. For the operator, select Greater Than or Equal To and key in 3000 for the account balances.
  3. Click Done.
  4. Next, select the max_age__c from our Attribute Library by accessing the Cross Sell Account Summary Metrics v1 Calculated Insights on the Individual and drag it over the the canvas.
  5. For the operator, select Greater Than and key in 12 for the months of age.
  6. Click Done.
  7. Next, select the count_deposit_account_type__c from our Attribute Library by accessing the Cross Sell Account Type Metrics v1 Calculated on the Individual and drag it over the the canvas.
  8. For the operator, select Greater Than or Equal To and key in 1 for the count.
  9. Add the dimension by selecting the deposit_account_type__c attribute, choose Contains as the Operator and key in SAVINGS.
  10. Click Done.
  11. Finally, select the count_deposit_account_type__c from our Attribute Library by accessing the Cross Sell Account Type Metrics v1 Calculated Insights on the Individual and drag it over the the canvas.
  12. For the operator, select Has No Value.
  13. Add the dimension by selecting the deposit_account_type__c attribute, choose Contains as Operator and key in MONEY_MARKET.
  14. Click Done.

For the Publish Schedule, we update it to reflect a Publish Schedule of every 12 hours.

fins-cdp-setup-segment-cross-sell.png

Up-selling mortgage account:

For Up-selling mortgage account, to aggregrate data use the Calculated Insights created earlier and filter the data with the criteria mentioned in the below steps:

  1. Select the all_account_balances__c from our Attribute Library by accessing the Upsell Account Summary Metrics v1 Calculated Insights on the Individual and drag it over the the canvas.
  2. For the operator, select Greater Than or Equal To and key in 10000 for the account balances.
  3. Click Done.
  4. Next, select the time_as_client__c from our Attribute Library by accessing the Upsell Account Summary Metrics v1 Calculated Insights on the Individual and drag it over the the canvas.
  5. For the operator, select Greater Than and key in 36 for the months of age.
  6. Click Done.
  7. Next, select the count__c from our Attribute Library by accessing the Upsell Account Type Metrics v1 Calculated on the Individual and drag it over the the canvas.
  8. For the operator, select Greater Than or Equal To and key in 1 for the count.
  9. Add the dimension by selecting the account_type__c attribute, choose Contains as the Operator and key in MONEY.
  10. Click Done.
  11. Finally, select the total_time_spent__c from our Attribute Library by accessing the Upsell Web EngagementSummary Metrics v1 Calculated Insights on the Individual and drag it over the the canvas.
  12. For the operator, select Greater Than or Equal To and key in 20 for the count.
  13. Add the dimension by selecting the channel_type__c attribute, choose Contains as the Operator and key in real estate.
  14. Click Done.

For the Publish Schedule, we update it to reflect a Publish Schedule of every 12 hours.

fins-cdp-setup-segment-up-sell.png

Activation Targets

Create activation targets to build, and activate data segments with Salesforce CDP.

For the Optimize Customer Experiences with CDP use case, create a Cloud File Storage (S3) Activation Target and a Marketing Cloud Activation Target.

Activation Target - Cloud File Storage (S3)

Create an activation target in Salesforce CDP to publish segments to Cloud Storage. You can activate S3 without mapping contact points. Before you can create an Activation Target, determine your S3 access key and secret key.

  1. Click Activation Targets.
  2. Click New Activation Target.
  3. Select Cloud File Storage.
  4. Click Next.
  5. Enter an easy to recognize and unique name.
  6. Click Next.
  7. Type the S3 bucket and parent folder configured by your admin for your activation target.
  8. To give access to your S3 location, enter your S3 access key and secret key. The S3 credentials provided must have the following permissions: s3:PutObject, s3:GetObject, s3:ListBucket, s3:DeleteObject, s3:GetBucketLocation. Note: To delete S3 access or secret keys, delete the activation target.
  9. Select an export file format.
  10. Click Save.

Your Cloud File Storage activation target is created and the following items are added to Cloud Storage:

  1. A metadata file that describes the segment definition.
  2. Data files that contain the segment members with additional attributes.
  3. A segment-data folder to indicate that writing output files to the folder has completed. If this file is missing, it indicates that either the files are being written or the data was only partially written and the producer failed.

After you create and activate segments to Cloud File Storage, a subfolder called Salesforce-c360-Segments is automatically created when the first segment is activated to Cloud File Storage.

  1. Access Cloud File Storage.
  2. Navigate to the bucket name you configured in Cloud File Storage Activation Target.
  3. Navigate to /Salesforce_c360_Segments.

The actual segments will be created with prefixes of YYYY/MM/DD/HH/{first 100 characters of segment name}_{20 characters of activation name}_{timestamp in yyyyMMddHHmmsssSSS format}.

Activation Target - Marketing Cloud:

Before creating an activation target, configure the Marketing Cloud connector in the CDP Setup page.

  1. Click Setup gear icon and then CDP Setup.
  2. Select Marketing Cloud.
  3. Enter the Credentials to authenticate your Marketing Cloud account. You can proceed with the next step in the setup only if the authentication is successful.
  4. Data Source setup - this step is optional. This needs to be set up if you are planning to ingest data from Marketing Cloud into Salesforce CDP. Note: For the Optimize Customer Experiences with CDP use case, this step is skipped.
  5. Select Business Units to activate - this step is optional. To add or remove business units (BU), click the arrows between the two columns. Note: For the Optimize Customer Experiences with CDP use case, select business units to publish segments to Marketing Cloud.

Create an activation target in Salesforce CDP to publish segments to Marketing Cloud business units.

  1. Click Activation Targets.
  2. Click New.
  3. Select Marketing Cloud.
  4. Click Next.
  5. Enter an easy to recognize and unique name. IMPORTANT: Marketing Cloud activation target names cannot be more than 128 characters, start with an underscore, be all numbers, or include these characters: @ % ^ = < ' * + # $ / \ ! ? ( ) { } [ ] , . (space)
  6. Click Next.
  7. To add or remove business units (BU) to receive the published segments, click the arrows between the two columns. When an activation target has multiple BUs, the activation filters the contacts by the BUs. The segment activates as a Shared Data Extension (SDE) and not as a Data Extension (DE) to Marketing Cloud. If an activation target has multiple business units configured, modify the activation target configuration to include one business unit only.
  8. Save your changes.

Your Marketing Cloud activation target is created.

Activation

Activation is the process that materializes and publishes a segment to activation platforms. An activation target is used to store authentication and authorization information for a given activation platform. You can publish your segments, include contact points, and additional attributes to the activation targets.

View, change, and delete your Activations in Salesforce CDP for publishing of segments to activation platforms. Navigate to an Activation record to view details and publish history for that Activation.

In Activations, the Activation History shows when and how segments were published. For segments published to a Marketing Cloud activation target, additional Accepted and Rejected columns only appear in Activation Publish History to provide more details.

To view the publish history of a segment:

  1. In Salesforce CDP, navigate to your Activations.
  2. Select the activation to review.
  3. View details in Activation History.

After you create a segment in Salesforce CDP, you can publish a segment to an activation target.

  1. In Salesforce CDP, click Segments.
  2. Select a segment.
  3. In Activations, click New.
  4. Select an Activation Target.
  5. Select an entity from Activation Membership.
  6. Click Next.
  7. Select your contact points. Note: Selecting contact points is optional for S3 activations. When contact points are mapped, select an existing path.
  8. To activate additional attributes, click Add Attributes.
  9. Drag up to 100 additional attributes to the canvas and click Save. Note: Two types of additional attributes can be added to your activation:
    • Attributes of the Activation Membership entity.
    • Attributes from entities mapped with a direct relationship to the Activation Membership entity.
  10. Click to add a unique preferred attribute name for any attributes.
  11. Click Next.
  12. Enter a name and description for your activation. IMPORTANT: You cannot include the following characters in the name field: + ! @ # $ % ^ * ( ) = { } [ ] \ . < > / " : ? | , _ &
  13. Click Save.

Your segment publishes on the next publish scheduled for the selected activation target.

For the Optimize Customer Experiences with CDP use case, create Activations to both Activation Targets S3 and Marketing Cloud.

Cross-selling money market account/Up-selling mortgage account

Below are steps to create an Activation with an Activiation Target:

  1. In Activations, click New.
  2. Select the Segment Cross-selling money market account/Up-selling mortgage account.
  3. Select an Activation Target (S3/Marketing Cloud Activiation Targets) created earlier.
  4. Select Account from Activation Membership.
  5. Click Next.
  6. Select your contact points. Note: Selecting contact points is optional for S3 activations. When contact points are mapped, select an existing path or click Edit .
  7. To activate additional attributes, click Add Attributes.
  8. Drag Account Id, Account Name to the canvas and click Save.
  9. From Unified Individual <ruleset> select the Global Party field and select the path that relates from Account
  10. Click Next.
  11. Enter a name and description for your activation. IMPORTANT: You cannot include the following characters in the name field: + ! @ # $ % ^ * ( ) = { } [ ] \ . < > / " : ? | , _ &
  12. Click Save.

Reviews

TypeCustom
OrganizationMuleSoft
Published by
MuleSoft Solutions
Published onSep 13, 2022
Contact nameMuleSoft Solutions
Contact emailsolutions-questions@mulesoft.com
Asset overview

Asset versions for 1.6.x

Asset versions
VersionActions
1.6.0

Categories

Accelerator
Financial ServicesNo values left to add
Industry Vertical
Financial ServicesBankingNo values left to add

Tags